home *** CD-ROM | disk | FTP | other *** search
/ Dr. Windows 3 / dr win3.zip / dr win3 / WINPROGS / WINSRC20.ZIP / CMDFILES.C < prev    next >
C/C++ Source or Header  |  1990-10-16  |  41KB  |  1,300 lines

  1. /*
  2.     Command-line / Command-File Parser Routines
  3.     This module is linked as an overlay, use ENTER_OVLY and EXIT_OVLY.
  4. */
  5.  
  6. #include <stdlib.h>
  7. #include <stdio.h>
  8. #include <string.h>
  9. #include <float.h>
  10. #include <ctype.h>
  11. #include "fractint.h"
  12. #ifdef __TURBOC__
  13. #include <dir.h>
  14. #endif
  15.  
  16. /* routines in this module    */
  17.  
  18. void cmdfiles_overlay(void);
  19. int  cmdfiles(int argc, char *argv[]);
  20. void set_3d_defaults(void);
  21. int  readconfig(void);
  22.  
  23. static void cmdfile(FILE *);
  24. static int  cmdarg(char *);
  25. static void argerror(char *);
  26. static void makeconfig(void);
  27.  
  28. /* variables defined by the command line/files processor */
  29. char    temp1[256];        /* temporary strings        */
  30. char    ifsfilename[80];    /* IFS code file */
  31. char    readname[80];        /* name of fractal input file */
  32. int    potflag=0;        /* continuous potential enabled? */
  33. int    pot16bit;        /* store 16 bit continuous potential values */
  34. char    savename[80];        /* save files using this name */
  35. char    ifs3dfilename[80];    /* IFS 3D code file */
  36. int    gif87a_flag;        /* 1 if GIF87a format, 0 otherwise */
  37. int    askvideo;        /* flag for video prompting */
  38. char    floatflag;
  39. int    biomorph;        /* flag for biomorph */
  40. int    forcesymmetry;        /* force symmetry */
  41. int    showfile;        /* zero if file display pending */
  42. int    rflag, rseed;        /* Random number seeding flag and value */
  43. int    decomp[2];        /* Decomposition coloring */
  44. int    distest;
  45. int    warn;            /* 0 if savename warnings off, 1 if on */
  46. int    soundflag;        /* 0 if sound is off, 1 if on */
  47. int    basehertz;        /* sound=x/y/x hertz value */
  48. int    debugflag;        /* internal use only - you didn't see this */
  49. int    timerflag;        /* you didn't see this, either */
  50. int    cyclelimit;        /* color-rotator upper limit */
  51. int    inside;         /* inside color: 1=blue     */
  52. int    outside;        /* outside color    */
  53. int    finattract;        /* finite attractor logic */
  54. int    display3d;        /* 3D display flag: 0 = OFF */
  55. int    overlay3d;        /* 3D overlay flag: 0 = OFF */
  56. int    init3d[20];        /* '3d=nn/nn/nn/...' values */
  57. int    initbatch;        /* 1 if batch run (no kbd)  */
  58. unsigned initsavetime;        /* autosave minutes        */
  59. double    initorbit[2];        /* initial orbitvalue */
  60. char    useinitorbit;        /* flag for initorbit */
  61. int    initmode;        /* initial video mode        */
  62. int    initincr;        /* initial maxiter incrmnt  */
  63. int    initcyclelimit;     /* initial cycle limit        */
  64. unsigned char usemag;        /* use center-mag corners   */
  65. int    bailout;        /* user input bailout value */
  66. double    inversion[3];        /* radius, xcenter, ycenter */
  67. extern    int invert;
  68. extern int fractype;        /* fractal type         */
  69. extern double param[4];     /* initial parameters        */
  70. extern double xxmin,xxmax;    /* initial corner values    */
  71. extern double yymin,yymax;    /* initial corner values    */
  72. extern double xx3rd,yy3rd;    /* initial corner values    */
  73. extern char usr_stdcalcmode;    /* '1', '2', 'g', 'b'       */
  74. extern int maxit;        /* max iterations        */
  75. extern int usr_periodicitycheck; /* periodicity checking  1=on,0=off */
  76. extern char usr_floatflag;    /* flag for float calcs */
  77. extern int usr_distest;     /* nonzero if distance estimator option */
  78. extern char color_lakes;    /* finite attractor flag */
  79. extern int haze;
  80. extern int RANDOMIZE;
  81. extern int Ambient;
  82. extern int full_color;
  83. extern char light_name[];
  84. extern char back_color[];
  85.  
  86. extern double potparam[];    /* potential parameters  */
  87. extern int Printer_Resolution, LPTNumber,
  88.            Printer_Type, Printer_Titleblock,
  89.            Printer_ColorXlat, Printer_SetScreen,
  90.            Printer_SFrequency, Printer_SAngle,
  91.            Printer_SStyle;                          /* for printer functions */
  92.  
  93.  
  94. int    transparent[2];     /* transparency min/max values */
  95. int    LogFlag;            /* Logarithmic palette flag: 0 = no */
  96.  
  97. char FormFileName[80];        /* file to find (type=)formulas in */
  98. char FormName[40];        /* Name of the Formula (if not null) */
  99.  
  100. extern int video_type;
  101. extern int no_color_text;
  102. extern unsigned char olddacbox[256][3];    /* Video-DAC saved values */
  103. extern unsigned char dacbox[256][3];       /* Video-DAC values */
  104.  
  105. extern int   viewwindow;
  106. extern float viewreduction;
  107. extern int   viewcrop;
  108. extern float finalaspectratio;
  109. extern int   viewxdots,viewydots;
  110.  
  111. extern    char *fkeys[];        /* Function Key names for display table */
  112.  
  113. static    int toolsfile;        /* 1 if inside a TOOLS file, 0 otherwise */
  114.  
  115. extern char MAP_name[];
  116. extern int mapset;
  117. extern char loadPalette;
  118.  
  119. extern int eyeseparation; /* Occular Separation */
  120. extern int glassestype;
  121. extern int xadjust; /* Convergence */
  122. extern int yadjust;
  123. extern int xtrans, ytrans; /* X,Y shift with no perspective */
  124. extern int red_crop_left, red_crop_right;
  125. extern int blue_crop_left, blue_crop_right;
  126. extern int red_bright, blue_bright;
  127. extern char showbox; /* flag to show box and vector in preview */
  128. extern char preview;        /* 3D preview mode flag */
  129. extern int previewfactor; /* Coarsness */
  130.  
  131. static int first_init=1;    /* first time into cmdfiles? */
  132. static int init_rseed;
  133. static int initcorners;     /* corners set flag */
  134.  
  135.  
  136. void cmdfiles_overlay() { }    /* for restore_active_ovly */
  137.  
  138. char LFileName[80]; /* file to find (type=)L-System's in */
  139. char LName[40];    /* Name of L-System */
  140.  
  141. extern int  active_system;        /* 0=dos, 1=windows */
  142.  
  143. /*
  144.     cmdfiles(argc,argv) process the command-line arguments
  145.         it also processes the 'sstools.ini' file and any
  146.         indirect files ('fractint @myfile')
  147. */
  148.  
  149. int cmdfiles(argc,argv)
  150. int argc;
  151. char *argv[];
  152. {
  153. double    atof(), ftemp;            /* floating point stuff    */
  154. int    i, j, k, l;            /* temporary loop counters */
  155.  
  156. char    curarg[141];            /* temporary strings        */
  157.  
  158. char tempstring[101];            /* temporary strings        */
  159. FILE *initfile;             /* for .INI, '@' files      */
  160.  
  161. ENTER_OVLY(OVLY_CMDFILES);
  162.  
  163. gif87a_flag = 0;            /* turn on GIF89a processing */
  164.  
  165. usr_periodicitycheck = 1;        /* turn on periodicity      */
  166. rflag = 0;                /* not a fixed srand() seed */
  167. if (first_init)
  168.     init_rseed = (int)time(NULL);
  169. rseed = init_rseed;
  170. usr_floatflag = 0;            /* turn off the float flag */
  171. biomorph = -1;                /* turn off biomorph flag */
  172. askvideo = 1;                /* turn on video-prompt flag */
  173. warn = 0;                /* no warnings on savename */
  174. soundflag = -1;             /* sound is on          */
  175. basehertz = 440;            /* basic hertz rate */
  176. initbatch = 0;                /* not in batch mode      */
  177. initsavetime = 0;            /* no auto-save       */
  178. initmode = -1;                /* no initial video mode  */
  179. inside = 1;                /* inside color = blue      */
  180. outside = -1;                /* outside color = -1 (not used) */
  181. finattract = 0;             /* disable finite attractor logic */
  182. maxit = 150;                /* initial maxiter      */
  183. initincr = 50;                /* initial iter increment */
  184. usr_stdcalcmode = 'g';                  /* initial solid-guessing */
  185. fractype = 0;                /* initial type Set flag  */
  186. initcorners = 0;            /* initial flag: no corners */
  187. usemag = 0;                /* use corners, not center-mag */
  188. bailout = 0;                /* no user-entered bailout */
  189. for (i = 0; i < 4; i++) param[i] = FLT_MAX; /* initial parameter values */
  190. for (i = 0; i < 3; i++) potparam[i]  = 0.0; /* initial potential values */
  191. for (i = 0; i < 3; i++) inversion[i] = 0.0;  /* initial invert values */
  192. invert = 0;
  193. decomp[0] = decomp[1] = 0;
  194. usr_distest = 0;
  195. initorbit[0] = initorbit[1] = 0.0;    /* initial orbit values */
  196. useinitorbit = 0;
  197. forcesymmetry = 999;            /* symmetry not forced */
  198.  
  199. viewwindow = 0;             /* full screen */
  200. viewreduction = 4.2;
  201. viewcrop = 1;
  202. finalaspectratio = SCREENASPECT;
  203. viewxdots = viewydots = 0;
  204.  
  205. xx3rd = xxmin = -2.5; xxmax = 1.5;    /* initial corner values  */
  206. yy3rd = yymin = -1.5; yymax = 1.5;    /* initial corner values  */
  207. pot16bit = potflag = 0;
  208. initcyclelimit=55;            /* spin-DAC default speed limit */
  209. transparent[0] = transparent[1] = 0;        /* no min/max transparency */
  210. LogFlag = 0;                    /* no logarithmic palette */
  211. strcpy(ifsfilename,".\\");                      /* initially current directory */
  212. strcpy(ifs3dfilename,".\\");                    /* initially current directory */
  213. mapset = 0;                    /* no map= name active */
  214. loadPalette = 0;
  215.  
  216. debugflag = 0;                    /* debugging flag(s) are off */
  217. timerflag = 0;                    /* timer flags are off        */
  218.  
  219. display3d = 0;                    /* 3D display is off        */
  220. overlay3d = 0;                    /* 3D overlay is off        */